home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / B-Book Series / (k)b4.d64 / validate.l < prev   
Text File  |  2007-02-28  |  1KB  |  49 lines

  1. 0010 DIM MAX$ OF 2, D$ OF 2, M$ OF 2, Y$ OF 2
  2. 0020 DIM SURNAM$ OF 20, FORNAM$ OF 20, SEX$ OF 1, BIRTH$ OF 6
  3. 0030 OPEN FILE 2,"PERSONFILE",READ
  4. 0040 FOR REC:=1 TO 5 DO
  5. 0050 READ FILE 2: ROLL,SURNAM$,FORNAM$,SEX$,BIRTH$,HITE,CHECK
  6. 0060 IF CHECK<>0 THEN
  7. 0070 PRINT "ERROR IN RECORD NUMBER";REC
  8. 0080 ELSE 
  9. 0090 NUMERIC
  10. 0100 IF DATE=FALSE THEN
  11. 0110 PRINT "NON-NUMERIC DATA OR WRONG LENGTH, RECORD";REC
  12. 0120 ELSE 
  13. 0130 D$:=BIRTH$(1:2); M$:=BIRTH$(3:4); Y$:=BIRTH$(5:6)
  14. 0140 IF M$>="01" AND M$<="12" THEN
  15. 0150 MAXDAY
  16. 0160 IF D$<"01" OR D$>MAX$ THEN D$:="**"
  17. 0170 ELSE 
  18. 0180 M$:="**"
  19. 0190 ENDIF 
  20. 0200 IF Y$>"60" OR Y$<"30" THEN Y$:="**"
  21. 0210 ENDIF 
  22. 0220 PRINT BIRTH$
  23. 0230 IF BIRTH$<>D$+M$+Y$ THEN PRINT D$+M$+Y$
  24. 0240 ENDIF 
  25. 0250 ENDFOR REC
  26. 0260 CLOSE
  27. 0270 PROC NUMERIC 
  28. 0280 DATE:=TRUE
  29. 0290 IF LEN(BIRTH$)<>6 THEN DATE:=FALSE
  30. 0300 FOR K:=1 TO 6 DO
  31. 0310 CH:=ORD(BIRTH$(K:K))
  32. 0320 IF CH<48 OR CH>57 THEN DATE:=FALSE
  33. 0330 ENDFOR K
  34. 0350 ENDPROC NUMERIC
  35. 0360 PROC MAXDAY 
  36. 0370 MAX$:="00"
  37. 0380 IF M$ IN "04060911" THEN MAX$:="30"
  38. 0390 IF M$="02" THEN LEAPYEAR
  39. 0400 IF MAX$<"28" THEN MAX$:="31"
  40. 0410 ENDPROC MAXDAY
  41. 0420 PROC LEAPYEAR 
  42. 0430 YEAR:=(ORD(Y$(1:1))-48)*10+ORD(Y$(2:2))-48
  43. 0450 IF YEAR/4=YEAR DIV 4 THEN
  44. 0460 MAX$:="29"
  45. 0470 ELSE 
  46. 0480 MAX$:="28"
  47. 0490 ENDIF 
  48. 0500 ENDPROC LEAPYEAR
  49.